/* A Bison parser, made by GNU Bison 2.3.  */

/* Skeleton interface for Bison's Yacc-like parsers in C

   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
   Free Software Foundation, Inc.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor,
   Boston, MA 02110-1301, USA.  */

/* As a special exception, you may create a larger work that contains
   part or all of the Bison parser skeleton and distribute that work
   under terms of your choice, so long as that work isn't itself a
   parser generator using the skeleton or a modified version thereof
   as a parser skeleton.  Alternatively, if you modify or redistribute
   the parser skeleton itself, you may (at your option) remove this
   special exception, which will cause the skeleton and the resulting
   Bison output files to be licensed under the GNU General Public
   License without this special exception.

   This special exception was added by the Free Software Foundation in
   version 2.2 of Bison.  */

/* Tokens.  */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
   /* Put the tokens into the symbol table, so that GDB and other debuggers
      know about them.  */
   enum yytokentype {
     TString = 258,
     TIdentifier = 259,
     TRegisterId = 260,
     TInteger = 261,
     TStatusFlag = 262,
     Tascii = 263,
     Tasciiz = 264,
     Tword = 265,
     Tbyte = 266,
     Tresw = 267,
     Tresb = 268,
     Tstart = 269,
     Tglobal = 270,
     Textern = 271,
     Tdata = 272,
     Ttext = 273,
     Tnop = 274,
     Tadd = 275,
     Taddc = 276,
     Tsub = 277,
     Tsubc = 278,
     Tsubr = 279,
     Tsubrc = 280,
     Tand = 281,
     Tor = 282,
     Txor = 283,
     Trll = 284,
     Trllc = 285,
     Trla = 286,
     Trlac = 287,
     Trrl = 288,
     Trrlc = 289,
     Trra = 290,
     Trrac = 291,
     Tsll = 292,
     Tsllc = 293,
     Tsla = 294,
     Tslac = 295,
     Tsrl = 296,
     Tsrlc = 297,
     Tsra = 298,
     Tsrac = 299,
     Tld = 300,
     Tst = 301,
     Tldpri = 302,
     Tldpoi = 303,
     Tldpod = 304,
     Tstpri = 305,
     Tstpoi = 306,
     Tstpod = 307,
     Tjmp = 308,
     Tjmpns = 309,
     Tjmpcs = 310,
     Tjmpos = 311,
     Tjmpzs = 312,
     Tjmpge = 313,
     Tjmpgt = 314,
     Tjmpeq = 315,
     Tjmpfl = 316,
     Tjmpnn = 317,
     Tjmpnc = 318,
     Tjmpno = 319,
     Tjmpnz = 320,
     Tjmplt = 321,
     Tjmple = 322,
     Tjmpne = 323,
     Tsr = 324,
     Tsrns = 325,
     Tsrcs = 326,
     Tsros = 327,
     Tsrzs = 328,
     Tsrge = 329,
     Tsrgt = 330,
     Tsreq = 331,
     Tsrfl = 332,
     Tsrnn = 333,
     Tsrnc = 334,
     Tsrno = 335,
     Tsrnz = 336,
     Tsrlt = 337,
     Tsrle = 338,
     Tsrne = 339,
     Thibit = 340,
     Tsyscall = 341
   };
#endif
/* Tokens.  */
#define TString 258
#define TIdentifier 259
#define TRegisterId 260
#define TInteger 261
#define TStatusFlag 262
#define Tascii 263
#define Tasciiz 264
#define Tword 265
#define Tbyte 266
#define Tresw 267
#define Tresb 268
#define Tstart 269
#define Tglobal 270
#define Textern 271
#define Tdata 272
#define Ttext 273
#define Tnop 274
#define Tadd 275
#define Taddc 276
#define Tsub 277
#define Tsubc 278
#define Tsubr 279
#define Tsubrc 280
#define Tand 281
#define Tor 282
#define Txor 283
#define Trll 284
#define Trllc 285
#define Trla 286
#define Trlac 287
#define Trrl 288
#define Trrlc 289
#define Trra 290
#define Trrac 291
#define Tsll 292
#define Tsllc 293
#define Tsla 294
#define Tslac 295
#define Tsrl 296
#define Tsrlc 297
#define Tsra 298
#define Tsrac 299
#define Tld 300
#define Tst 301
#define Tldpri 302
#define Tldpoi 303
#define Tldpod 304
#define Tstpri 305
#define Tstpoi 306
#define Tstpod 307
#define Tjmp 308
#define Tjmpns 309
#define Tjmpcs 310
#define Tjmpos 311
#define Tjmpzs 312
#define Tjmpge 313
#define Tjmpgt 314
#define Tjmpeq 315
#define Tjmpfl 316
#define Tjmpnn 317
#define Tjmpnc 318
#define Tjmpno 319
#define Tjmpnz 320
#define Tjmplt 321
#define Tjmple 322
#define Tjmpne 323
#define Tsr 324
#define Tsrns 325
#define Tsrcs 326
#define Tsros 327
#define Tsrzs 328
#define Tsrge 329
#define Tsrgt 330
#define Tsreq 331
#define Tsrfl 332
#define Tsrnn 333
#define Tsrnc 334
#define Tsrno 335
#define Tsrnz 336
#define Tsrlt 337
#define Tsrle 338
#define Tsrne 339
#define Thibit 340
#define Tsyscall 341




#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
#line 61 "parser.ypp"
{
    int token;
    std::string* str;

    ast::Program* program;
    ast::DataSection* dataSection;
    ast::TextSection* textSection;

    ast::Directive* directive;
    ast::Instruction* instruction;
    ast::Operand* operand;

    ast::LabelList* labelList;
    ast::IntegerList* intList;
    ast::DirectiveList* dirList;
    ast::InstructionList* instrList;
}
/* Line 1489 of yacc.c.  */
#line 239 "parser.hpp"
	YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
#endif

extern YYSTYPE yylval;

#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
typedef struct YYLTYPE
{
  int first_line;
  int first_column;
  int last_line;
  int last_column;
} YYLTYPE;
# define yyltype YYLTYPE /* obsolescent; will be withdrawn */
# define YYLTYPE_IS_DECLARED 1
# define YYLTYPE_IS_TRIVIAL 1
#endif

extern YYLTYPE yylloc;
